"use strict";
// 类的基本使用
class Star {
    constructor(name, sex, age) {
        // 2. 在构造器种给属性赋值
        this.name = name;
        this.sex = sex;
        this.age = age;
    }
    // 保护修饰符，在自己和子类内部可以使用
    do() {
        console.log(`${this.name}在开演唱会`);
        return this.name;
    }
    zdo() {
        this.do();
    }
}
// 3. 实例传值，调用方法
let jason = new Star("张杰", "男", 18);
jason.zdo();
// 继承
class Smallstu extends Star {
    constructor(sname, ssex, stall, age) {
        super(sname, ssex, age); //通过 super 调用父类的构造器，把自己的值传给父
        this._stall = 180; //私有修饰符，只能在自己内部使用
        this._stall = stall;
    }
    watch() {
        console.log(this._stall, this.name);
        this.do(); //加了 protected 修饰符的方法，只能在父类和子类内部使用
    }
}
let sstu1 = new Smallstu("小红", "女", 155, 23);
console.log(sstu1);
sstu1.watch();
// 三个修饰符:
// public：默认修饰符，一个class类中，默认所有的属性和方法都有public修饰。它表示公共的属性和方法：在类内部、类外部、子类都可以使用这些方法和属性。
// private：它表示私有的属性和方法：只能在类内部使用这些方法和属性。
// protected：它表示受保护的属性和方法：只能在父类内部和子类内部中，使用这些方法和属性。父类和子类的外部不能使用。
// readonly: 公共的只读的属性和方法
